home *** CD-ROM | disk | FTP | other *** search
- Path: xanth!cs.odu.edu!Amiga-Request
- From: Amiga-Request@cs.odu.edu (Amiga Sources/Binaries Moderator)
- Newsgroups: comp.sources.amiga
- Subject: v90i145: XScheme 0.20 - an object-oriented scheme, Part07/07
- Message-ID: <12215@xanth.cs.odu.edu>
- Date: 14 Apr 90 21:15:17 GMT
- Sender: tadguy@cs.odu.edu
- Reply-To: rusty@fe2o3.UUCP (Rusty Haddock)
- Lines: 2884
- Approved: tadguy@cs.odu.edu (Tad Guy)
- X-Mail-Submissions-To: Amiga@cs.odu.edu
- X-Post-Discussions-To: comp.sys.amiga
-
- Submitted-by: rusty@fe2o3.UUCP (Rusty Haddock)
- Posting-number: Volume 90, Issue 145
- Archive-name: applications/xscheme-0.20/part07
-
- #!/bin/sh
- # This is a shell archive. Remove anything before this line, then unpack
- # it by saving it into a file and typing "sh file". To overwrite existing
- # files, type "sh file -c". You can also feed this as standard input via
- # unshar, or by typing "sh <file", e.g.. If this archive is complete, you
- # will see the following message at the end:
- # "End of archive 7 (of 7)."
- # Contents: xscheme.doc
- # Wrapped by tadguy@xanth on Sat Apr 14 17:07:32 1990
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f 'xscheme.doc' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'xscheme.doc'\"
- else
- echo shar: Extracting \"'xscheme.doc'\" \(52550 characters\)
- sed "s/^X//" >'xscheme.doc' <<'END_OF_FILE'
- X
- X
- X
- X
- X
- X
- X XSCHEME: An Object-oriented Scheme
- X
- X Version 0.17
- X
- X March 2, 1989
- X
- X
- X by
- X David Michael Betz
- X P.O. Box 144
- X Peterborough, NH 03458
- X
- X (603) 924-4145 (home)
- X
- X Copyright (c) 1989, by David Michael Betz
- X All Rights Reserved
- X Permission is granted for unrestricted non-commercial use
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X XSCHEME TABLE OF CONTENTS Page 2
- X
- X
- X TABLE OF CONTENTS
- X
- X TABLE OF CONTENTS..................................2
- X INTRODUCTION.......................................3
- X A NOTE FROM THE AUTHOR.............................4
- X EXPRESSIONS........................................5
- X BINDING FORMS.....................................10
- X SEQUENCING........................................11
- X DELAYED EVALUATION................................12
- X ITERATION.........................................13
- X DEFINITIONS.......................................14
- X LIST FUNCTIONS....................................15
- X DESTRUCTIVE LIST FUNCTIONS........................17
- X SYMBOL FUNCTIONS..................................18
- X VECTOR FUNCTIONS..................................19
- X ARRAY FUNCTIONS...................................20
- X CONVERSION FUNCTIONS..............................21
- X TYPE PREDICATES...................................22
- X EQUALITY PREDICATES...............................25
- X ARITHMETIC FUNCTIONS..............................26
- X NUMERIC COMPARISON FUNCTIONS......................29
- X BITWISE LOGICAL FUNCTIONS.........................30
- X STRING FUNCTIONS..................................31
- X STRING COMPARISON FUNCTIONS.......................32
- X CHARACTER COMPARISON FUNCTIONS....................33
- X INPUT/OUTPUT FUNCTIONS............................34
- X OUTPUT CONTROL FUNCTIONS..........................36
- X FILE I/O FUNCTIONS................................37
- X CONTROL FEATURES..................................39
- X ENVIRONMENT FUNCTIONS.............................40
- X UTILITY FUNCTIONS.................................41
- X SYSTEM FUNCTIONS..................................42
- X OBJECT REPRESENTATIONS............................43
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X XSCHEME INTRODUCTION Page 3
- X
- X
- X XScheme is an implementation of the Scheme programming language
- X with extensions to support object-oriented programming.
- X
- X There are currently implementations of XScheme running on the
- X IBM-PC and clones under MS-DOS, on the Macintosh, the Atari-ST
- X and the Amiga. It is completely written in the programming
- X language 'C' and is easily extended with user written built-in
- X functions and classes. It is available in source form to non-
- X commercial users.
- X
- X This document is a brief description of XScheme. XScheme
- X follows the "Revised^3 Report on the Algorithmic Language
- X Scheme". It assumes some knowledge of Scheme or LISP and some
- X understanding of the concepts of object-oriented programming.
- X
- X I recommend the book "Structure and Interpretation of Computer
- X Programs" by Harold Abelson and Gerald Jay Sussman and published
- X by The MIT Press and the McGraw-Hill Book Company for learning
- X Scheme (and programming in general). You might also find "The
- X Scheme Programming Language" by R. Kent Dybvig and "The Little
- X Lisper" by Daniel P. Friedman and Matthias Felleisen to be
- X helpful.
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X XSCHEME A NOTE FROM THE AUTHOR Page 4
- X
- X
- X A NOTE FROM THE AUTHOR
- X
- X If you have any problems with XScheme, feel free to contact me
- X for help or advice. Please remember that since XScheme is
- X available in source form in a high level language, many users
- X have been making versions available on a variety of machines.
- X If you call to report a problem with a specific version, I may
- X not be able to help you if that version runs on a machine to
- X which I don't have access. Please have the version number of
- X the version that you are running readily accessible before
- X calling me.
- X
- X If you find a bug in XScheme, first try to fix the bug yourself
- X using the source code provided. If you are successful in fixing
- X the bug, send the bug report along with the fix to me. If you
- X don't have access to a C compiler or are unable to fix a bug,
- X please send the bug report to me and I'll try to fix it.
- X
- X Any suggestions for improvements will be welcomed. Feel free to
- X extend the language in whatever way suits your needs. However,
- X PLEASE DO NOT RELEASE ENHANCED VERSIONS WITHOUT CHECKING WITH ME
- X FIRST!! I would like to be the clearing house for new features
- X added to XScheme. If you want to add features for your own
- X personal use, go ahead. But, if you want to distribute your
- X enhanced version, contact me first.
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X XSCHEME EXPRESSIONS Page 5
- X
- X
- X EXPRESSIONS
- X
- X <variable>
- X
- X An expression consisting of a variable is a variable
- X reference. The value of the variable reference is the value
- X stored in the location to which the variable is bound. It
- X is an error to reference an unbound variable.
- X
- X (QUOTE <datum>)
- X '<datum>
- X
- X (quote <datum>) evaluates to <datum>. <Datum> may be any
- X external representation of a Scheme object. This notation
- X is used to include literal constants in Scheme code. (quote
- X <datum>) may be abbreviated as '<datum>. The two notations
- X are equivalent in all respects.
- X
- X <constant>
- X
- X Numeric constants, string constants, character constants,
- X and boolean constants evaluate "to themselves"; they need
- X not be quoted.
- X
- X (<operator> <operand>...)
- X
- X A procedure call is written by simply enclosing in
- X parentheses expressions for the procedure to be called and
- X the arguments to be passed to it. The operator and operand
- X expressions are evaluated and the resulting procedure is
- X passed the resulting arguments.
- X
- X (<object> <selector> <operand>...)
- X
- X A message sending form is written by enclosing in
- X parentheses expressions for the receiving object, the
- X message selector, and the arguments to be passed to the
- X method. The receiver, selector, and argument expressions
- X are evaluated, the message selector is used to select an
- X appropriate method to handle the message, and the resulting
- X method is passed the resulting arguments.
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X XSCHEME EXPRESSIONS Page 6
- X
- X
- X (LAMBDA <formals> <body>)
- X
- X <Formals> should be a formal argument list as described
- X below, and <body> should be a sequence of one or more
- X expressions. A lambda expression evaluates to a procedure.
- X The environment in effect when the lambda expression is
- X evaluated is remembered as part of the procedure. When the
- X procedure is later called with some actual arguments, the
- X environment in which the lambda expression was evaluated
- X will be extended by binding the variables in the formal
- X argument list to fresh locations, the corresponding actual
- X argument values will be stored in those locations, and the
- X expressions in the body of the lambda expression will be
- X evaluated sequentially in the extended environment. The
- X result of the last expression in the body will be returned
- X as the result of the procedure call.
- X
- X <Formals> should have the following form:
- X
- X (<var>... [#!OPTIONAL <ovar>...] [. <rvar>])
- X or
- X (<var>... [#!OPTIONAL <ovar>...] [#!REST <rvar>])
- X
- X where:
- X
- X <var> is a required argument
- X <ovar> is an optional argument
- X <rvar> is a "rest" argument
- X
- X There are three parts to a <formals> list. The first lists
- X the required arguments of the procedure. All calls to the
- X procedure must supply values for each of the required
- X arguments. The second part lists the optional arguments of
- X the procedure. An optional argument may be supplied in a
- X call or omitted. If it is omitted, a special value is given
- X to the argument that satisfies the default-object?
- X predicate. This provides a way to test to see if an
- X optional argument was provided in a call or omitted. The
- X last part of the <formals> list gives the "rest" argument.
- X This argument will be bound to the rest of the list of
- X arguments supplied to a call after the required and optional
- X arguments have been removed.
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X XSCHEME EXPRESSIONS Page 7
- X
- X
- X (IF <test> <consequent> [<alternate>])
- X
- X An if expression is evaluated as follows: first, <test> is
- X evaluated. If it yields a true value, then <consequent> is
- X evaluated and its value is returned. Otherwise, <alternate>
- X is evaluated and its value is returned. If <test> yields a
- X false value and no <alternate> is specified, then the result
- X of the expression is unspecified.
- X
- X (ACCESS <variable> <env>)
- X
- X <Env> is evaluated producing an environment. The result is
- X the value of <variable> in this environment.
- X
- X (SET! <variable> <expression>)
- X
- X <Expression> is evaluated, and the resulting value is stored
- X in the location to which <variable> is bound. <Variable>
- X must be bound in some region or at the top level. The result
- X of the set! expression is unspecified.
- X
- X (SET! (ACCESS <variable> <env>) <value>)
- X
- X <Env> is evaluated producing an environment. <Value> is
- X evaluated and the resulting value is stored as the value of
- X <variable> in this environment. The result of the set!
- X expression is unspecified.
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X XSCHEME EXPRESSIONS Page 8
- X
- X
- X (COND <clause>...)
- X
- X Each clause should be of the form
- X
- X (<test> <expression>...)
- X
- X where <test> is any expression. The last <clause> may be an
- X "else clause," which has the form
- X
- X (ELSE <expression>...)
- X
- X A cond expression is evaluated by evaluating the <test>
- X expressions of successive <clause>s in order until one of
- X them evaluates to a true value. When a <test> evaluates to
- X a true value, then the remaining <expression>s in its
- X <clause> are evaluated in order, and the result of the last
- X <expression> in the <clause> is returned as the result of
- X the entire cond expression. If the selected <clause>
- X contains only the <test> and no <expression>s, then the
- X value of the <test> is returned as the result. If all
- X <test>s evaluate to false values, and there is no else
- X clause, then the result of the conditional expression is
- X unspecified; if there is an else clause, then its
- X <expression>s are evaluated, and the value of the last one
- X is returned.
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X XSCHEME EXPRESSIONS Page 9
- X
- X
- X (AND <test>...)
- X
- X The <test> expressions are evaluated from left to right, and
- X the value of the first expression that evaluates to a false
- X value is returned. Any remaining expressions are not
- X evaluated. If all the expressions evaluate to true values,
- X the value of the last expression is returned. If there are
- X no expressions then #t is returned.
- X
- X (OR <test>...)
- X
- X The <test> expressions are evaluated from left to right, and
- X the value of the first expression that evaluates to a true
- X value is returned. Any remaining expressions are not
- X evaluated. If all expressions evaluate to false values, the
- X value of the last expression is returned. If there are no
- X expressions then #f is returned.
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X XSCHEME BINDING FORMS Page 10
- X
- X
- X BINDING FORMS
- X
- X (LET [<name>] <bindings> <body>)
- X
- X <Bindings> should have the form
- X
- X ((<variable> <init>)...)
- X
- X where each <init> is an expression, and <body> should be a
- X sequence of one or more expressions. The <init>s are
- X evaluated in the current envirnoment, the <variable>s are
- X bound to fresh locations holding the results, the <body> is
- X evaluated in the extended environment, and the value of the
- X last expression of <body> is returned. Each binding of a
- X <variable> has <body> as its region.
- X
- X If a name is supplied, a procedure that takes the bound
- X variables as its arguments and has the body of the LET as
- X its body is bound to that name.
- X
- X (LET* <bindings> <body>)
- X
- X Same as LET except that the bindings are done sequentially
- X from left to right and the bindings to the left are visible
- X while evaluating the initialization expressions for each
- X variable.
- X
- X (LETREC <bindings> <body>)
- X
- X <Bindings> should have the form
- X
- X ((<variable> <init>)...)
- X
- X and <body> should be a sequence of one or more expressions.
- X The <variable>s are bound to fresh locations holding
- X undefined values; the <init>s are evaluated in the resulting
- X environment; each <variable> is assigned to the result of
- X the corresponding <init>; the <body> is evaluated in the
- X resulting environment; and the value of the last expression
- X in <body> is returned. Each binding of a <variable> has the
- X entire letrec expression as its region, making it possible
- X to define mutually recursive procedures. One restriction of
- X letrec is very important: it must be possible to evaluate
- X each <init> without referring to the value of any
- X <variable>. If this restriction is violated, then the
- X effect is undefined, and an error may be signalled during
- X evaluation of the <init>s. The restriction is necessary
- X because Scheme passes arguments by value rather than by
- X name. In the most common uses of letrec, all the <init>s
- X are lambda expressions and the restriction is satisfied
- X automatically.
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X XSCHEME SEQUENCING Page 11
- X
- X
- X SEQUENCING
- X
- X (BEGIN <expression>...)
- X (SEQUENCE <expression>...)
- X
- X The <expression>s are evaluated sequentially from left
- X to right, and the value of the last <expression> is
- X returned. This expression type is used to sequence side
- X effects such as input and output.
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X XSCHEME DELAYED EVALUATION Page 12
- X
- X
- X DELAYED EVALUATION
- X
- X (CONS-STREAM expr1 expr2)
- X
- X Create a cons stream whose head is expr1 (which is
- X evaluated immediately) and whose tail is expr2 (whose
- X evaluation is delayed until TAIL is called). To use
- X CONS-STREAM, enter the following access procedures:
- X
- X (define head car)
- X (define (tail stream) (force (cdr stream)))
- X
- X (DELAY <expression>)
- X
- X Evaluating this expression creates a "promise" to
- X evaluate <expression> at a later time.
- X
- X (FORCE promise)
- X
- X Applying FORCE to a promise generated by DELAY requests
- X that the promise produce the value of the expression
- X passed to DELAY. The first time a promise is FORCEed,
- X the DELAY expression is evaluated and the value stored.
- X On subsequent calls to FORCE with the same promise, the
- X saved value is returned.
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X XSCHEME ITERATION Page 13
- X
- X
- X ITERATION
- X
- X (WHILE <test> <expression>...)
- X
- X While is an iteration construct. Each iteration begins
- X by evaluating <test>; if the result is false, then the
- X loop terminates and the value of <test> is returned as
- X the value of the while expression. If <test> evaluates
- X to a true value, then the <expression>s are evaluated in
- X order for effect and the next iteration begins.
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X XSCHEME DEFINITIONS Page 14
- X
- X
- X DEFINITIONS
- X
- X (DEFINE <variable> <expression>)
- X
- X Define a variable and give it an initial value.
- X
- X (DEFINE (<variable> <formals>) <body>)
- X
- X Define a procedure.
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X XSCHEME LIST FUNCTIONS Page 15
- X
- X
- X LIST FUNCTIONS
- X
- X (CONS expr1 expr2)
- X
- X Create a new pair whose car is expr1 and whose cdr is
- X expr2.
- X
- X (CAR pair)
- X
- X Extract the car of a pair.
- X
- X (CDR pair)
- X
- X Extract the cdr of a pair.
- X
- X (CxxR pair)
- X (CxxxR pair)
- X (CxxxxR pair)
- X
- X These functions are short for combinations of CAR and
- X CDR. Each 'x' is stands for either 'A' or 'D'. An 'A'
- X stands for the CAR function and a 'D' stands for the CDR
- X function. For instance, (CADR x) is the same as (CAR
- X (CDR x)).
- X
- X (LIST expr...)
- X
- X Create a list whose elements are the arguments to the
- X function. This function can take an arbitrary number of
- X arguments. Passing no arguments results in the empty
- X list.
- X
- X (APPEND list...)
- X
- X Append lists to form a single list. This function takes
- X an arbitrary number of arguments. Passing no arguments
- X results in the empty list.
- X
- X (REVERSE list)
- X
- X Create a list whose elements are the same as the
- X argument except in reverse order.
- X
- X (LAST-PAIR list)
- X
- X Return the last pair in a list.
- X
- X (LENGTH list)
- X
- X Compute the length of a list.
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X XSCHEME LIST FUNCTIONS Page 16
- X
- X
- X (MEMBER expr list)
- X (MEMV expr list)
- X (MEMQ expr list)
- X
- X Find an element in a list. Each of these functions
- X searches the list looking for an element that matches
- X expr. If a matching element is found, the remainder of
- X the list starting with that element is returned. If no
- X matching element is found, the empty list is returned.
- X The functions differ in the test used to determine if an
- X element matches expr. The MEMBER function uses EQUAL?,
- X the MEMV function uses EQV? and the MEMQ function uses
- X EQ?.
- X
- X (ASSOC expr alist)
- X (ASSV expr alist)
- X (ASSQ expr alist)
- X
- X Find an entry in an association list. An association
- X list is a list of pairs. The car of each pair is the
- X key and the cdr is the value. These functions search an
- X association list for a pair whose key matches expr. If
- X a matching pair is found, it is returned. Otherwise,
- X the empty list is returned. The functions differ in the
- X test used to determine if a key matches expr. The ASSOC
- X function uses EQUAL?, the ASSV function uses EQV? and
- X the ASSQ function uses EQ?.
- X
- X (LIST-REF list n)
- X
- X Return the nth element of a list (zero based).
- X
- X (LIST-TAIL list n)
- X
- X Return the sublist obtained by removing the first n
- X elements of list.
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X XSCHEME DESTRUCTIVE LIST FUNCTIONS Page 17
- X
- X
- X DESTRUCTIVE LIST FUNCTIONS
- X
- X (SET-CAR! pair expr)
- X
- X Set the car of a pair to expr. The value returned by
- X this procedure is unspecified.
- X
- X (SET-CDR! pair expr)
- X
- X Set the cdr of a pair to expr. The value returned by
- X this procedure is unspecified.
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X XSCHEME SYMBOL FUNCTIONS Page 18
- X
- X
- X SYMBOL FUNCTIONS
- X
- X (BOUND? sym)
- X
- X Returns #t if a global value is bound to the symbol and
- X #f otherwise.
- X
- X (SYMBOL-VALUE sym)
- X
- X Get the global value of a symbol.
- X
- X (SET-SYMBOL-VALUE! sym expr)
- X
- X Set the global value of a symbol. The value returned by
- X this procedure is unspecified.
- X
- X (SYMBOL-PLIST sym)
- X
- X Get the property list associated with a symbol.
- X
- X (SET-SYMBOL-PLIST! sym plist)
- X
- X Set the property list associate with a symbol. The
- X value returned by this procedure is unspecified.
- X
- X (GENSYM [sym|str|num])
- X
- X Generate a new, uninterned symbol. The print name of
- X the symbol will consist of a prefix with a number
- X appended. The initial prefix is "G" and the initial
- X number is 1. If a symbol is specified as an argument,
- X the prefix is set to the print name of that symbol. If
- X a string is specified, the prefix is set to that string.
- X If a number is specified, the numeric suffix is set to
- X that number. After the symbol is generated, the number
- X is incremented so subsequent calls to GENSYM will
- X generate numbers in sequence.
- X
- X (GET sym prop)
- X
- X Get the value of a property of a symbol. The prop
- X argument is a symbol that is the property name. If a
- X property with that name exists on the symbols property
- X list, the value of the property is returned. Otherwise,
- X the empty list is returned.
- X
- X (PUT sym prop expr)
- X
- X Set the value of a property of a symbol. The prop
- X argument is a symbol that is the property name. The
- X property/value combination is added to the property list
- X of the symbol.
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X XSCHEME VECTOR FUNCTIONS Page 19
- X
- X
- X VECTOR FUNCTIONS
- X
- X (VECTOR expr...)
- X
- X Create a vector whose elements are the arguments to the
- X function. This function can take an arbitrary number of
- X arguments. Passing no arguments results in a zero
- X length vector.
- X
- X (MAKE-VECTOR len)
- X
- X Make a vector of the specified length.
- X
- X (VECTOR-LENGTH vect)
- X
- X Get the length of a vector.
- X
- X (VECTOR-REF vect n)
- X
- X Return the nth element of a vector (zero based).
- X
- X (VECTOR-SET! vect n expr)
- X
- X Set the nth element of a vector (zero based).
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X XSCHEME ARRAY FUNCTIONS Page 20
- X
- X
- X ARRAY FUNCTIONS
- X
- X (MAKE-ARRAY d1 d2...)
- X
- X Make an array (vector of vectors) with the specified
- X dimensions. At least one dimension must be specified.
- X
- X (ARRAY-REF array s1 s2...)
- X
- X Get an array element. The sn arguments are integer
- X subscripts (zero based).
- X
- X (ARRAY-SET! array s1 s2... expr)
- X
- X Set an array element. The sn arguments are integer
- X subscripts (zero based).
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X XSCHEME CONVERSION FUNCTIONS Page 21
- X
- X
- X CONVERSION FUNCTIONS
- X
- X (SYMBOL->STRING sym)
- X
- X Convert a symbol to a string. Returns the print name of
- X the symbol as a string.
- X
- X (STRING->SYMBOL str)
- X
- X Convert a string to a symbol. Returns a symbol with the
- X string as its print name. This can either be a new
- X symbol or an existing one with the same print name.
- X
- X (VECTOR->LIST vect)
- X
- X Convert a vector to a list. Returns a list of the
- X elements of the vector.
- X
- X (LIST->VECTOR list)
- X
- X Convert a list to a vector. Returns a vector of the
- X elements of the list.
- X
- X (STRING->LIST str)
- X
- X Convert a string to a list. Returns a list of the
- X characters in the string.
- X
- X (LIST->STRING list)
- X
- X Convert a list of character to a string. Returns a
- X string whose characters are the elements of the list.
- X
- X (CHAR->INTEGER char)
- X
- X Convert a character to an integer. Returns the ASCII
- X code of the character as an integer.
- X
- X (INTEGER->CHAR n)
- X
- X Convert an integer ASCII code to a character. Returns
- X the character whose ASCII code is the integer.
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X XSCHEME TYPE PREDICATES Page 22
- X
- X
- X TYPE PREDICATE FUNCTIONS
- X
- X (NOT expr)
- X
- X Returns #t if the expression is #f and #t otherwise.
- X
- X (NULL? expr)
- X
- X Returns #t if the expression is the empty list and #f
- X otherwise.
- X
- X (ATOM? expr)
- X
- X Returns #f if the expression is a pair and #t otherwise.
- X
- X (LIST? expr)
- X
- X Returns #t if the expression is either a pair or the
- X empty list and #f otherwise.
- X
- X (NUMBER? expr)
- X
- X Returns #t if the expression is a number and #f
- X otherwise.
- X
- X (BOOLEAN? expr)
- X
- X Returns #t if the expression is either #t or #f and #f
- X otherwise.
- X
- X (PAIR? expr)
- X
- X Returns #t if the expression is a pair and #f otherwise.
- X
- X (SYMBOL? expr)
- X
- X Returns #t if the expression is a symbol and #f
- X otherwise.
- X
- X (COMPLEX? expr)
- X
- X Returns #t if the expression is a complex number and #f
- X otherwise.
- X Note: Complex numbers are not yet supported by XScheme.
- X
- X (REAL? expr)
- X
- X Returns #t if the expression is a real number and #f
- X otherwise.
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X XSCHEME TYPE PREDICATES Page 23
- X
- X
- X (RATIONAL? expr)
- X
- X Returns #t if the expression is a rational number and #f
- X otherwise.
- X Note: Rational numbers are not yet supported by
- X XScheme.
- X
- X (INTEGER? expr)
- X
- X Returns #t if the expression is an integer and #f
- X otherwise.
- X
- X (CHAR? expr)
- X
- X Returns #t if the expression is a character and #f
- X otherwise.
- X
- X (STRING? expr)
- X
- X Returns # if the expression is a string and #f
- X otherwise.
- X
- X (VECTOR? expr)
- X
- X Returns #t if the expression is a vector and #f
- X otherwise.
- X
- X (PROCEDURE? expr)
- X
- X Returns #t if the expression is a procedure (closure)
- X and #f otherwise.
- X
- X (PORT? expr)
- X
- X Returns #t if the expression is a port and #f otherwise.
- X
- X (INPUT-PORT? expr)
- X
- X Returns #t if the expression is an input port and #f
- X otherwise.
- X
- X (OUTPUT-PORT? expr)
- X
- X Returns #t if the expression is an output port and #f
- X otherwise.
- X
- X (OBJECT? expr)
- X
- X Returns #t if the expression is an object and #f
- X otherwise.
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X XSCHEME TYPE PREDICATES Page 24
- X
- X
- X (EOF-OBJECT? expr)
- X
- X Returns #t if the expression is the object returned by
- X READ upon detecting an end of file condition and #f
- X otherwise.
- X
- X (DEFAULT-OBJECT? expr)
- X
- X Returns #t if the expression is the object passed as the
- X default value of an optional parameter to a procedure
- X when that parameter is omitted from a call and #f
- X otherwise.
- X
- X (ENVIRONMENT? x)
- X
- X Returns #t if the expression is an environment and #f
- X otherwise.
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X XSCHEME EQUALITY PREDICATES Page 25
- X
- X
- X EQUALITY PREDICATES
- X
- X (EQUAL? expr1 expr2)
- X
- X Recursively compares two objects to determine if their
- X components are the same and returns #t if they are the
- X same and #f otherwise.
- X
- X (EQV? expr1 expr2)
- X
- X Compares two objects to determine if they are the same
- X object. Returns #t if they are the same and #f
- X otherwise. This function does not compare the elements
- X of lists, vectors or strings but will compare all types
- X of numbers.
- X
- X (EQ? expr1 expr2)
- X
- X Compares two objects to determine if they are the same
- X object. Returns #t if they are the same and #f
- X otherwise. This function performs a low level address
- X compare on two objects and may return #f for objects
- X that appear on the surface to be the same. This is
- X because the objects are not stored uniquely in memory.
- X For instance, numbers may appear to be equal, but EQ?
- X will return #f when comparing them if they are stored at
- X different addresses. The advantage of this function is
- X that it is faster than the others. Symbols are
- X guaranteed to compare correctly, so EQ? can safely be
- X used to compare them.
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X XSCHEME ARITHMETIC FUNCTIONS Page 26
- X
- X
- X ARITHMETIC FUNCTIONS
- X
- X (ZERO? n)
- X
- X Returns #t if the number is zero and #f otherwise.
- X
- X (POSITIVE? n)
- X
- X Returns #t if the number is positive and #f otherwise.
- X
- X (NEGATIVE? n)
- X
- X Returns #t if the number is negative and #f otherwise.
- X
- X (ODD? n)
- X
- X Returns #t if the integer is odd and #f otherwise.
- X
- X (EVEN? n)
- X
- X Returns #t if the integer is even and #f otherwise.
- X
- X (EXACT? n)
- X
- X Returns #t if the number is exact and #f otherwise.
- X Note: This function always returns #f in XScheme since
- X exact numbers are not yet supported.
- X
- X (INEXACT? n)
- X
- X Returns #t if the number is inexact and #f otherwise.
- X Note: This function always returns #t in XScheme since
- X exact numbers are not yet supported.
- X
- X (TRUNCATE n)
- X
- X Truncates a number to an integer and returns the
- X resulting value.
- X
- X (FLOOR n)
- X
- X Returns the largest integer not larger than n.
- X
- X (CEILING n)
- X
- X Returns the smallest integer not smaller than n.
- X
- X (ROUND n)
- X
- X Returns the closest integer to n, rounding to even when
- X n is halfway between two integers.
- X
- X (1+ n)
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X XSCHEME ARITHMETIC FUNCTIONS Page 27
- X
- X
- X Returns the result of adding one to the number.
- X
- X (-1+ n)
- X
- X Returns the result of subtracting one from the number.
- X
- X (ABS n)
- X
- X Returns the absolute value of the number.
- X
- X (GCD n1 n2)
- X
- X Returns the greatest common divisor of the two numbers.
- X
- X (RANDOM n)
- X
- X Returns a random number between zero and n-1 (n must be
- X an integer).
- X
- X (+ n1 n2...)
- X
- X Returns the sum of the numbers.
- X
- X (- n)
- X
- X Negates the number and returns the resulting value.
- X
- X (- n1 n2...)
- X
- X Subtracts each remaining number from n1 and returns the
- X resulting value.
- X
- X (* n1 n2...)
- X
- X Multiples the numbers and returns the resulting value.
- X
- X (/ n)
- X
- X Returns 1/n.
- X
- X (/ n1 n2...)
- X
- X Divides n1 by each of the remaining numbers and returns
- X the resulting value.
- X
- X (QUOTIENT n1 n2...)
- X
- X Divides the integer n1 by each of the remaining numbers
- X and returns the resulting integer quotient. This
- X function does integer division.
- X
- X (REMAINDER n1 n2)
- X
- X Divides the integer n1 by the integer n2 and returns the
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X XSCHEME ARITHMETIC FUNCTIONS Page 28
- X
- X
- X remainder.
- X
- X (MIN n1 n2...)
- X
- X Returns the number with the minimum value.
- X
- X (MAX n1 n2...)
- X
- X Returns the number with the maximum value.
- X
- X (SIN n)
- X
- X Returns the sine of the number.
- X
- X (COS n)
- X
- X Returns the cosine of the number.
- X
- X (TAN n)
- X
- X Returns the tangent of the number.
- X
- X (ASIN n)
- X
- X Returns the arc-sine of the number.
- X
- X (ACOS n)
- X
- X Returns the arc-cosine of the number.
- X
- X (ATAN x)
- X
- X Returns the arc-tangent of x.
- X
- X (ATAN y x)
- X
- X Returns the arc-tangent of y/x.
- X
- X (EXP n)
- X
- X Returns e raised to the n.
- X
- X (SQRT n)
- X
- X Returns the square root of n.
- X
- X (EXPT n1 n2)
- X
- X Returns n1 raised to the n2 power.
- X
- X (LOG n)
- X
- X Returns the natural logarithm of n.
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X XSCHEME NUMERIC COMPARISON FUNCTIONS Page 29
- X
- X
- X NUMERIC COMPARISON FUNCTIONS
- X
- X (< n1 n2...)
- X (= n1 n2...)
- X (> n1 n2...)
- X <<= n1 n2...)
- X (>= n1 n2...)
- X
- X These functions compare numbers and return #t if the
- X numbers match the predicate and #f otherwise. For
- X instance, (< x y z) will return #t if x is less than y
- X and y is less than z.
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X XSCHEME BITWISE LOGICAL FUNCTIONS Page 30
- X
- X
- X BITWISE LOGICAL FUNCTIONS
- X
- X (LOGAND n1 n2...)
- X
- X Returns the bitwise AND of the integer arguments.
- X
- X (LOGIOR n1 n2...)
- X
- X Returns the bitwise inclusive OR of the integer
- X arguments.
- X
- X (LOGXOR n1 n2...)
- X
- X Returns the bitwise exclusive OR of the integer
- X arguments.
- X
- X (LOGNOT n)
- X
- X Returns the bitwise complement of n.
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X XSCHEME STRING FUNCTIONS Page 31
- X
- X
- X STRING FUNCTIONS
- X
- X (STRING-LENGTH str)
- X
- X Returns the length of the string.
- X
- X (STRING-NULL? str)
- X
- X Returns #t if the string has a length of zero and #f
- X otherwise.
- X
- X (STRING-APPEND str1...)
- X
- X Returns the result of appending the string arguments.
- X If no arguments are supplied, it returns the null
- X string.
- X
- X (STRING-REF str n)
- X
- X Returns the nth character in a string.
- X
- X (SUBSTRING str start end)
- X
- X Returns the substring of str starting at start and
- X ending at end (integers). The range is inclusive of
- X start and exclusive of end.
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X XSCHEME STRING COMPARISON FUNCTIONS Page 32
- X
- X
- X STRING COMPARISON FUNCTIONS
- X
- X (STRING<? str1 str2)
- X (STRING=? str1 str2)
- X (STRING>? str1 str2)
- X (STRING<=? str1 str2)
- X (STRING>=? str1 str2)
- X
- X These functions compare strings and return #t if the
- X strings match the predicate and #f otherwise. For
- X instance, (STRING< x y) will return #t if x is less than
- X y. Case is significant. #A does not match #a.
- X
- X (STRING-CI<? str1 str2)
- X (STRING-CI=? str1 str2)
- X (STRING-CI>? str1 str2)
- X (STRING-CI<=? str1 str2)
- X (STRING-CI>=? str1 str2)
- X
- X These functions compare strings and return #t if the
- X strings match the predicate and #f otherwise. For
- X instance, (STRING-CI< x y) will return #t if x is less
- X than y. Case is not significant. #A matches #a.
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X XSCHEME CHARACTER COMPARISON FUNCTIONS Page 33
- X
- X
- X CHARACTER COMPARISON FUNCTIONS
- X
- X (CHAR<? ch1 ch2)
- X (CHAR=? ch1 ch2)
- X (CHAR>? ch1 ch2)
- X (CHAR<=? ch1 ch2)
- X (CHAR>=? ch1 ch2)
- X
- X These functions compare characters and return #t if the
- X characters match the predicate and #f otherwise. For
- X instance, (CHAR< x y) will return #t if x is less than
- X y. Case is significant. #A does not match #a.
- X
- X (CHAR-CI<? ch1 ch2)
- X (CHAR-CI=? ch1 ch2)
- X (CHAR-CI>? ch1 ch2)
- X (CHAR-CI<=? ch1 ch2)
- X (CHAR-CI>=? ch1 ch2)
- X
- X These functions compare characters and return #t if the
- X characters match the predicate and #f otherwise. For
- X instance, (CHAR-CI< x y) will return #t if x is less
- X than y. Case is not significant. #A matchs #a.
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X XSCHEME INPUT/OUTPUT FUNCTIONS Page 34
- X
- X
- X INPUT/OUTPUT FUNCTIONS
- X
- X (READ [port])
- X
- X Reads an expression from the specified port. If no port
- X is specified, the current input port is used. Returns
- X the expression read or an object that satisfies the
- X default-object? predicate if it reaches the end of file
- X on the port.
- X
- X (READ-CHAR [port])
- X
- X Reads a character from the specified port. If no port
- X is specified, the current input port is used. Returns
- X the character read or an object that satisfies the
- X default-object? predicate if it reaches the end of file
- X on the port.
- X
- X (READ-BYTE [port])
- X
- X Reads a byte from the specified port. If no port is
- X specified, the current input port is used. Returns the
- X byte read or an object that satisfies the default-
- X object? predicate if it reaches the end of file on the
- X port.
- X
- X (WRITE expr [port])
- X (PRIN1 expr [port])
- X
- X Writes an expression to the specified port. If no port
- X is specified, the current output port is used. The
- X expression is written such that the READ function can
- X read it back. This means that strings will be enclosed
- X in quotes and characters will be printed with #
- X notation.
- X
- X (WRITE-CHAR ch [port])
- X
- X Writes a character to the specified port. If no port is
- X specified, the current output port is used.
- X
- X (WRITE-BYTE ch [port])
- X
- X Writes a byte to the specified port. If no port is
- X specified, the current output port is used.
- X
- X (DISPLAY expr [port])
- X (PRINC expr [port])
- X
- X Writes an expression to the specified port. If no port
- X is specified, the current output port is used. The
- X expression is written without any quoting characters.
- X No quotes will appear around strings and characters are
- X written without the # notation.
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X XSCHEME INPUT/OUTPUT FUNCTIONS Page 35
- X
- X
- X (NEWLINE [port])
- X
- X Starts a new line on the specified port. If no port is
- X specified, the current output port is used.
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X XSCHEME OUTPUT CONTROL FUNCTIONS Page 36
- X
- X
- X OUTPUT CONTROL FUNCTIONS
- X
- X (PRINT-BREADTH [n])
- X
- X Controls the maximum number of elements of a list that
- X will be printed. If n is an integer, the maximum number
- X is set to n. If it is #f, the limit is set to infinity.
- X This is the default. If n is omitted from the call, the
- X current value is returned.
- X
- X (PRINT-DEPTH [n])
- X
- X Controls the maximum number of levels of a nested list
- X that will be printed. If n is an integer, the maximum
- X number is set to n. If it is #f, the limit is set to
- X infinity. This is the default. If n is omitted from
- X the call, the current value is returned.
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X XSCHEME FILE I/O FUNCTIONS Page 37
- X
- X
- X FILE I/O FUNCTIONS
- X
- X All four of the following OPEN functions take an optional
- X argument to indicate that file I/O is to be done in binary
- X mode. For binary files, this argument should be the symbol
- X BINARY. For text files, the argument can be left out or the
- X symbol TEXT can be supplied.
- X
- X (OPEN-INPUT-FILE str ['binary])
- X
- X Opens the file named by the string and returns an input
- X port.
- X
- X (OPEN-OUTPUT-FILE str ['binary])
- X
- X Creates the file named by the string and returns an
- X output port.
- X
- X (OPEN-APPEND-FILE str ['binary])
- X
- X Opens the file named by the string for appending returns
- X an output port.
- X
- X (OPEN-UPDATE-FILE str ['binary])
- X
- X Opens the file named by the string for input and output
- X and returns an input/output port.
- X
- X (GET-FILE-POSITION port)
- X
- X Returns the current file position as an offset in bytes
- X from the beginning of the file.
- X
- X (SET-FILE-POSITION! port offset whence)
- X
- X Sets the current file position as an offset in bytes
- X from the beginning of the file (when whence equals 0),
- X the current file position (when whence equals 1) or the
- X end of the file (when whence equals 2). Returns the new
- X file position as an offset from the start of the file.
- X
- X (CLOSE-PORT port)
- X
- X Closes any port.
- X
- X (CLOSE-INPUT-PORT port)
- X
- X Closes an input port.
- X
- X (CLOSE-OUTPUT-PORT port)
- X
- X Closes an output port.
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X XSCHEME FILE I/O FUNCTIONS Page 38
- X
- X
- X (CALL-WITH-INPUT-FILE str proc)
- X
- X Open the file whose name is specifed by str and call
- X proc passing the resulting input port as an argument.
- X When proc returns, close the file and return the value
- X returned by proc as the result.
- X
- X (CALL-WITH-OUTPUT-FILE str proc)
- X
- X Create the file whose name is specifed by str and call
- X proc passing the resulting output port as an argument.
- X When proc returns, close the file and return the value
- X returned by proc as the result.
- X
- X (CURRENT-INPUT-PORT)
- X
- X Returns the current input port.
- X
- X (CURRENT-OUTPUT-PORT)
- X
- X Returns the current output port.
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X XSCHEME CONTROL FEATURES Page 39
- X
- X
- X CONTROL FEATURES
- X
- X (EVAL expr)
- X
- X Evaluate the expression in the global environment and
- X return its value.
- X
- X (APPLY proc args)
- X
- X Apply the procedure to the list of arguments and return
- X the result.
- X
- X (MAP proc list...)
- X
- X Apply the procedure to argument lists formed by taking
- X corresponding elements from each list. Form a list from
- X the resulting values and return that list as the result
- X of the MAP call.
- X
- X (FOR-EACH fun list...)
- X
- X Apply the procedure to argument lists formed by taking
- X corresponding elements from each list. The values
- X returned by the procedure applications are discarded.
- X The value returned by FOR-EACH is unspecified.
- X
- X (CALL-WITH-CURRENT-CONTINUATION proc)
- X (CALL/CC proc)
- X
- X Form an "escape procedure" from the current continuation
- X and pass it as an argument to proc. Calling the escape
- X procedure with a single argument will cause that
- X argument to be passed to the continuation that was in
- X effect when the CALL-WITH-CURRENT-CONTINUATION procedure
- X was called.
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X XSCHEME ENVIRONMENT FUNCTIONS Page 40
- X
- X
- X ENVIRONMENT FUNCTIONS
- X
- X (THE-ENVIRONMENT)
- X
- X Returns the current environment.
- X
- X (PROCEDURE-ENVIRONMENT proc)
- X
- X Returns the environment from a procedure closure.
- X
- X (ENVIRONMENT-BINDINGS env)
- X
- X Returns an association list corresponding to the top
- X most frame of the specified environment.
- X
- X (ENVIRONMENT-PARENT env)
- X
- X Returns the parent environment of the specified
- X environment.
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X XSCHEME UTILITY FUNCTIONS Page 41
- X
- X
- X UTILITY FUNCTIONS
- X
- X (LOAD str)
- X
- X Read and evaluate each expression from the specified
- X file.
- X
- X (LOAD-NOISILY str)
- X
- X Read and evaluate each expression from the specified
- X file and print the results to the current output port.
- X
- X (TRANSCRIPT-ON str)
- X
- X Opens a transcript file with the specified name and
- X begins logging the interactive session to that file.
- X
- X (TRANSCRIPT-OFF)
- X
- X Closes the current transcript file.
- X
- X (EXIT)
- X
- X Exits from XScheme back to the operating system.
- X
- X (GC [ni vi])
- X
- X Invokes the garbage collector and returns information on
- X memory usage. If ni and vi are specified, they must be
- X integers. Node and vector space are expanded by those
- X amounts respectively and no garbage collection is
- X triggered. GC returns an array of six values: the
- X number of calls to the garbage collector, the total
- X number of nodes, the current number of free nodes, the
- X number of node segments, the number of vector segments
- X and the total number of bytes allocated to the heap.
- X
- X (RESET)
- X
- X Returns to the top level read/eval/print loop.
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X XSCHEME SYSTEM FUNCTIONS Page 42
- X
- X
- X SYSTEM FUNCTIONS
- X
- X (%CAR pair)
- X (%CDR pair)
- X (%SET-CAR! pair expr)
- X (%SET-CDR! pair expr)
- X (%VECTOR-LENGTH vect)
- X (%VECTOR-REF vect n)
- X (%VECTOR-SET! vect n expr)
- X
- X These functions do the same as their counterparts
- X without the leading '%' character. The difference is
- X that they don't check the type of their first argument.
- X This makes it possible to examine data structures that
- X have the same internal representation as pairs and
- X vectors. It is *very* dangerous to modify objects using
- X these functions and there is no guarantee that future
- X releases of XScheme will represent objects in the same
- X way that the current version does.
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X XSCHEME OBJECT REPRESENTATIONS Page 43
- X
- X
- X OBJECT REPRESENTATIONS
- X
- X This version of XScheme uses the following object
- X representations:
- X
- X Closures are represented as pairs. The car of the
- X pair is the compiled function and the cdr of the
- X pair is the saved environment.
- X
- X Compiled functions are represented as vectors. The
- X element at offset 0 is the bytecode string. The
- X element at offset 1 is the function name. The
- X element at offset 2 is a list of names of the
- X function arguments. The elements at offsets above 2
- X are the literals refered to by the compiled
- X bytecodes.
- X
- X Environments are represented as lists of vectors.
- X Each vector is an environment frame. The element at
- X offset 0 is a list of the symbols that are bound in
- X that frame. The symbol values start at offset 1.
- X
- X Objects are represented as vectors. The element at
- X offset 0 is the class of the object. The remaining
- X elements are the object's instance variable values.
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- END_OF_FILE
- if test 52550 -ne `wc -c <'xscheme.doc'`; then
- echo shar: \"'xscheme.doc'\" unpacked with wrong size!
- fi
- # end of 'xscheme.doc'
- fi
- echo shar: End of archive 7 \(of 7\).
- cp /dev/null ark7isdone
- MISSING=""
- for I in 1 2 3 4 5 6 7 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have unpacked all 7 archives.
- rm -f ark[1-9]isdone
- else
- echo You still need to unpack the following archives:
- echo " " ${MISSING}
- fi
- ## End of shell archive.
- exit 0
- --
- Mail submissions (sources or binaries) to <amiga@cs.odu.edu>.
- Mail comments to the moderator at <amiga-request@cs.odu.edu>.
- Post requests for sources, and general discussion to comp.sys.amiga.
-